Geting the position of the mouse pointer in JavaScript (Works in IE7)

The following function will return the position of the mouse pointer based on the event. It actually works in IE7.

function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

Example usage

popupMenu.style.left = getPosition(event).x;
popupMenu.style.top = getPosition(event).y;
Author Paul Hayman

Paul is the COO of kwiboo ltd and has more than 20 years IT consultancy experience. He has consulted for a number of blue chip companies and has been exposed to the folowing sectors: Utilities, Telecommunications, Insurance, Media, Investment Banking, Leisure, Legal, CRM, Pharmaceuticals, Interactive Gaming, Mobile Communications, Online Services.

Paul is the COO and co-founder of kwiboo (http://www.kwiboo.com/) and is also the creator of GeekZilla.

Comments

kangax said:

"if (e.pageX || e.pageY)" will be skipped if both values are 0. Code will then try to use clientX/clientY and fail.

06/Apr/2008 22:31 PM

[SW] said:

it's was helpfull for me.

thaks.

23/Nov/2011 23:37 PM

davey said:

not using ie, but it worked for what I wanted it to do, thanks

18/Sep/2012 20:11 PM

Add Comment

Name
Comment
 

Your comment has been received and will be shown once it passes moderation.